package com.norman.sorry.core.moves;

import java.util.Collection;

import com.norman.sorry.core.pieces.IPiece;
import com.norman.sorry.core.tiles.ILinkedTile;

/**
 * Represents a single move of game pieces around the game board. This interface
 * requires a few basic methods that are critical to the game.
 * 
 * @author Brian Norman
 * @version 0.0.1 beta
 * @since 0.0.1 beta
 */
public interface IMove {

   /**
    * Returns the new tile of a game piece. If a game piece does not move the
    * method returns null.
    * 
    * @param piece
    *           a game piece that will move.
    * @return the new tile of a game piece or null if it does not move.
    */
   public ILinkedTile getTile(IPiece piece);

   /**
    * Returns the pieces involved in this move.
    * 
    * @return the pieces involved in this move.
    */
   public Collection<IPiece> getPieces();

}
